﻿using System;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class Admin_VerRemitos : GenericPage
{
    Usuarios usuario = new Usuarios();
    Remitos remitoD = new Remitos();
    Remitos remitoH = new Remitos();
    List<Remitos> listaRemitos = new List<Remitos>();
    private ExceptionConstructor exNew = new ExceptionConstructor();

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                DateTime dHoy = DateTime.Now.Date;
                FechaH.SetFecha(dHoy);
                string sFecha = SetearFecha();
                FechaD.SetFecha(Convert.ToDateTime(sFecha));
                lblAccion.Text = "Buscar Remitos";
                CargarComboEstado();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnBuscar_Click
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        lblAccion.Text = "";
        BMRemitos bmRemitos = new BMRemitos(Connection);
        listaRemitos = new List<Remitos>();
        try
        {
            if (txtIdRemito.Text != "")
            {
                remitoD = new Remitos();
                remitoD.Id_Remito = Convert.ToInt64(txtIdRemito.Text.Trim());
                listaRemitos = bmRemitos.BMRemitosSearch(remitoD, remitoD);
            }
        }
        catch { remitoD.Id_Remito = 0; }

        try
        {
            if (listaRemitos.Count == 0)
            {
                if (FechaD.GetFecha() != FechaD.FechaNula)
                {
                    remitoD.Fecha = FechaD.GetFecha();
                }
                else
                {
                    remitoD.Fecha = FechaD.FechaNula;
                }
                if (FechaH.GetFecha() != FechaH.FechaNula)
                {
                    remitoH.Fecha = FechaH.GetFecha();
                }
                else
                {
                    remitoH.Fecha = FechaD.FechaNula;
                }
                remitoD.Id_Estado = Convert.ToInt16(cboEstado.SelectedItem.Value);

                listaRemitos = bmRemitos.BMRemitosSearch(remitoD, remitoH);
            }

            Session["listaRemitos"] = listaRemitos;
            if (txtIdRemito.Text != "" && listaRemitos.Count == 1)
            {
                Remitos remito = new Remitos();
                remito = listaRemitos[0];

                StringBuilder sb = new StringBuilder();
                if (remito.Tipo == "L")
                {
                    sb.Append("~/Logistica/RemitosL.aspx");
                    Session["RemitoL"] = remito;
                }
                else
                {
                    sb.Append("Remitos.aspx?Id_Remito=");
                    sb.Append(remito.Id_Remito.ToString());
                    sb.Append("&Accion=3");
                }

                Response.Redirect(sb.ToString(), false);
            }
            else
            {
                CargarGrilla();
            }

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Session["listaRemitos"] = null;
        Response.Redirect("~/Seguridad/Default.aspx", false);
    }
    #endregion

    #region gvRemitos_PageIndexChanging
    protected void gvRemitos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvRemitos.PageIndex = e.NewPageIndex;
            CargarGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvRemitos_SelectedIndexChanged
    protected void gvRemitos_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            Remitos remito = new Remitos();
            BMRemitos bmRemitos = new BMRemitos(Connection);
            remito.Id_Remito= Convert.ToInt64(gvRemitos.SelectedDataKey.Value);
            listaRemitos = bmRemitos.BMRemitosSearch(remito, remito);
            remito = listaRemitos[0];
            StringBuilder sb = new StringBuilder();
            if (remito.Tipo == "L")
            {
                sb.Append("~/Logistica/RemitosL.aspx");
                Session["RemitoL"] = remito;
            }
            else
            {
                sb.Append("Remitos.aspx");
                Session["Accion"] = 2;
                Session["Remito"] = remito;
            }

            Response.Redirect(sb.ToString(), false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnInforme_Click
    protected void btnInforme_Click(object sender, EventArgs e)
    {
        try
        {
            if (Session["listaRemitos"] != null)
            {
                List<Remitos> listaRemitos = (List<Remitos>)Session["listaRemitos"];
                if (listaRemitos.Count > 0)
                {
                    Session["pFechaD"] = FechaD.GetFecha();
                    Session["pFechaH"] = FechaH.GetFecha();
                    Session["iReporte"] = 1;

                    registrarScript();
                }
                else
                {
                    lblAccion.Text = "No hay datos para generar Informe";
                }
            }
            else
            {
                lblAccion.Text = "No hay datos para generar Informe";
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region CargarComboEstado
    private void CargarComboEstado()
    {
        try
        {
            ListItem item0 = new ListItem();
            item0.Value = "0";
            item0.Text = "Todos";
            cboEstado.Items.Add(item0);

            ListItem item1 = new ListItem();
            item1.Value = "1";
            item1.Text = "Activo";
            cboEstado.Items.Add(item1);

            ListItem item2 = new ListItem();
            item2.Value = "2";
            item2.Text = "Facturado";
            cboEstado.Items.Add(item2);

            ListItem item3 = new ListItem();
            item3.Value = "3";
            item3.Text = "Anulado";
            cboEstado.Items.Add(item3);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarGrilla
    private void CargarGrilla()
    {
        try
        {
            listaRemitos = (List<Remitos>)Session["listaRemitos"];
            gvRemitos.DataSource = listaRemitos;
            gvRemitos.DataBind();
            txtTotal.Text = listaRemitos.Count.ToString();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region registrarScript
    protected void registrarScript()
    {
        // dispararPopUp(hacePostBack)
        StringBuilder scriptSession = new StringBuilder("<script language='javascript' type='text/javascript'>");
        scriptSession.Append("function mostrarReporte()");
        scriptSession.Append("{");
        scriptSession.Append("var stringURL = '../Informes/RptRemitosView.aspx';");
        scriptSession.Append("var opciones='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes';");
        scriptSession.Append("var newWin = window.open(stringURL, 'PopUp" + DateTime.Now.Ticks.ToString() + "', opciones);");
        scriptSession.Append("}");
        scriptSession.Append("mostrarReporte();");
        scriptSession.Append("</script>");

        Page.ClientScript.RegisterStartupScript(this.GetType(), "Reporte" + Session["iReporte"].ToString(), scriptSession.ToString());
    }
    #endregion

    #endregion
}
